// 联合类型
type unobj = {
    a: number
    b: number
} | {
    b: number
    c: number
}

const data1: unobj = {
    b: 5,
    a: 1,
    c: 0,
}
const temp = {a: 1, b: 2, c: 3};
const obj2: unobj = temp; // 应该提示类型不兼容（如果 strict 模式生效）

// 只有这个属性能用  可以理解为或 要么data1是 ab 要么是 bc  但使用属性时 只能用共有属性
console.log(data1.b)


// 交叉类型


type unobj2 = {
    a: number
    b: number
} & {
    b: number
    c: number
}
// 必须三个属性都在  既要满足ab 又要满足bc 所以三个属性都要有 所以就能全部使用
const data2: unobj2 = {
    b: 0,
    c: 0,
    a: 1
}
data2.c
data2.b
data2.a
